/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.lostreseditores.modelo;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author DILOVE
 */
@Entity
@Table(name = "pregunta")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Pregunta.findAll", query = "SELECT p FROM Pregunta p"),
    @NamedQuery(name = "Pregunta.findByAcccioncompetenciapreg", query = "SELECT p FROM Pregunta p WHERE p.acccioncompetenciapreg = :acccioncompetenciapreg"),
    @NamedQuery(name = "Pregunta.findByEnunciadopregunta", query = "SELECT p FROM Pregunta p WHERE p.enunciadopregunta = :enunciadopregunta"),
    @NamedQuery(name = "Pregunta.findByRetroalimentacionpreg", query = "SELECT p FROM Pregunta p WHERE p.retroalimentacionpreg = :retroalimentacionpreg"),
    @NamedQuery(name = "Pregunta.findByEstadopregunta", query = "SELECT p FROM Pregunta p WHERE p.estadopregunta = :estadopregunta"),
    @NamedQuery(name = "Pregunta.findByNivelDificultad", query = "SELECT p FROM Pregunta p WHERE p.nivelDificultad = :nivelDificultad"),
    @NamedQuery(name = "Pregunta.findByIdPregunta", query = "SELECT p FROM Pregunta p WHERE p.idPregunta = :idPregunta")})
public class Pregunta implements Serializable {
    private static final long serialVersionUID = 1L;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 255)
    @Column(name = "acccioncompetenciapreg")
    private String acccioncompetenciapreg;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 255)
    @Column(name = "enunciadopregunta")
    private String enunciadopregunta;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 255)
    @Column(name = "retroalimentacionpreg")
    private String retroalimentacionpreg;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 255)
    @Column(name = "estadopregunta")
    private String estadopregunta;
    @Column(name = "nivel_dificultad")
    private Integer nivelDificultad;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id_pregunta")
    private Integer idPregunta;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idPregunta")
    private List<Opcionesrespuesta> opcionesrespuestaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "pregunta")
    private List<Respuestasexamen> respuestasexamenList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "pregunta")
    private List<Examenpreguntas> examenpreguntasList;
    @JoinColumn(name = "id_usuario", referencedColumnName = "id_usuario")
    @ManyToOne(optional = false)
    private Usuario idUsuario;
    @JoinColumn(name = "id_nivel", referencedColumnName = "id_nivel")
    @ManyToOne(optional = false)
    private Niveldesempeno idNivel;
    @JoinColumn(name = "id_contexto", referencedColumnName = "id_contexto")
    @ManyToOne(optional = false)
    private Contextopregunta idContexto;
    @JoinColumn(name = "id_componente", referencedColumnName = "id_componente")
    @ManyToOne(optional = false)
    private Componente idComponente;
    @JoinColumn(name = "id_competencia", referencedColumnName = "id_competencia")
    @ManyToOne(optional = false)
    private Competencia idCompetencia;
    @JoinColumn(name = "id_asignatura", referencedColumnName = "id_asignatura")
    @ManyToOne(optional = false)
    private Asignatura idAsignatura;

    public Pregunta() {
    }

    public Pregunta(Integer idPregunta) {
        this.idPregunta = idPregunta;
    }

    public Pregunta(Integer idPregunta, String acccioncompetenciapreg, String enunciadopregunta, String retroalimentacionpreg, String estadopregunta) {
        this.idPregunta = idPregunta;
        this.acccioncompetenciapreg = acccioncompetenciapreg;
        this.enunciadopregunta = enunciadopregunta;
        this.retroalimentacionpreg = retroalimentacionpreg;
        this.estadopregunta = estadopregunta;
    }

    public String getAcccioncompetenciapreg() {
        return acccioncompetenciapreg;
    }

    public void setAcccioncompetenciapreg(String acccioncompetenciapreg) {
        this.acccioncompetenciapreg = acccioncompetenciapreg;
    }

    public String getEnunciadopregunta() {
        return enunciadopregunta;
    }

    public void setEnunciadopregunta(String enunciadopregunta) {
        this.enunciadopregunta = enunciadopregunta;
    }

    public String getRetroalimentacionpreg() {
        return retroalimentacionpreg;
    }

    public void setRetroalimentacionpreg(String retroalimentacionpreg) {
        this.retroalimentacionpreg = retroalimentacionpreg;
    }

    public String getEstadopregunta() {
        return estadopregunta;
    }

    public void setEstadopregunta(String estadopregunta) {
        this.estadopregunta = estadopregunta;
    }

    public Integer getNivelDificultad() {
        return nivelDificultad;
    }

    public void setNivelDificultad(Integer nivelDificultad) {
        this.nivelDificultad = nivelDificultad;
    }

    public Integer getIdPregunta() {
        return idPregunta;
    }

    public void setIdPregunta(Integer idPregunta) {
        this.idPregunta = idPregunta;
    }

    @XmlTransient
    public List<Opcionesrespuesta> getOpcionesrespuestaList() {
        return opcionesrespuestaList;
    }

    public void setOpcionesrespuestaList(List<Opcionesrespuesta> opcionesrespuestaList) {
        this.opcionesrespuestaList = opcionesrespuestaList;
    }

    @XmlTransient
    public List<Respuestasexamen> getRespuestasexamenList() {
        return respuestasexamenList;
    }

    public void setRespuestasexamenList(List<Respuestasexamen> respuestasexamenList) {
        this.respuestasexamenList = respuestasexamenList;
    }

    @XmlTransient
    public List<Examenpreguntas> getExamenpreguntasList() {
        return examenpreguntasList;
    }

    public void setExamenpreguntasList(List<Examenpreguntas> examenpreguntasList) {
        this.examenpreguntasList = examenpreguntasList;
    }

    public Usuario getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(Usuario idUsuario) {
        this.idUsuario = idUsuario;
    }

    public Niveldesempeno getIdNivel() {
        return idNivel;
    }

    public void setIdNivel(Niveldesempeno idNivel) {
        this.idNivel = idNivel;
    }

    public Contextopregunta getIdContexto() {
        return idContexto;
    }

    public void setIdContexto(Contextopregunta idContexto) {
        this.idContexto = idContexto;
    }

    public Componente getIdComponente() {
        return idComponente;
    }

    public void setIdComponente(Componente idComponente) {
        this.idComponente = idComponente;
    }

    public Competencia getIdCompetencia() {
        return idCompetencia;
    }

    public void setIdCompetencia(Competencia idCompetencia) {
        this.idCompetencia = idCompetencia;
    }

    public Asignatura getIdAsignatura() {
        return idAsignatura;
    }

    public void setIdAsignatura(Asignatura idAsignatura) {
        this.idAsignatura = idAsignatura;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idPregunta != null ? idPregunta.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Pregunta)) {
            return false;
        }
        Pregunta other = (Pregunta) object;
        if ((this.idPregunta == null && other.idPregunta != null) || (this.idPregunta != null && !this.idPregunta.equals(other.idPregunta))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.lostreseditores.modelo.Pregunta[ idPregunta=" + idPregunta + " ]";
    }
    
}
